二、搭建MyBatis

您所在的位置:网站首页 info debug error 二、搭建MyBatis

二、搭建MyBatis

2023-04-03 03:06| 来源: 网络整理| 查看: 265

1.开发环境

IDE:idea2021.1.1

构建工具:maven 3.5.4

MySQL版本:5.7

MyBatis版本:3.5.7

2.创建Maven工程

①创建Maven工程 MyBatis_Test

②配置Maven环境

 ③在pom.xml进行配置

配置打包方式是jar

jar

添加相关依赖

org.mybatis mybatis 3.5.7 junit junit 4.12 test mysql mysql-connector-java 5.1.3 log4j log4j 1.2.17

 3.创建MyBatis的核心配置文件

习惯上命名为mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合Spring之后,这个配置文件可以省略,所以大家操作时可以直接复制、粘贴。核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息核心配置文件存放的位置是src/main/resources目录下

4.创建mapper接口

MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。

①创建表t_user

 ②创建对应的实体类

创建JavaBean对象

③创建mapper接口

5.创建MyBatis的映射文件

相关概念:ORM(Object Relationship Mapping)对象关系映射。

对象:Java的实体类对象关系:关系型数据库映射:二者之间的对应关系

映射文件的命名规则

表所对应的实体类的类名+Mapper.xml例如:表t_user,映射的实体类是User,所对应的映射文件是UserMapper.xml因此一个映射文件对应一个实体类,对应一张表的操作MyBatis映射文件用于编写sql,访问以及操作表中的数据MyBatis映射文件存放的位置是src/main/resources/mappers目录下

 MyBatis中面向接口操作数据,保证两个一致

mapper接口的全类名和映射文件的命名空间(namespace)保持一致Mapper接口的方法的方法名和映射文件编写的SQL标签的id属性保持一致

①在UserMapper.class

 ②UserMapper.xml

insert t_user values (null,"test666","test666","test666")

 ③完整的mybatis-config.xml配置类

6.通过junit测试添加功能

SqlSession:代表java程序和数据库之间的会话(HttpSession是Java程序和浏览器之间的会话)SqlSessionFactory:是“生产”SqlSession的工厂工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们可以把创建这个对象的相关代码封装到一个“工厂类“中,以后都使用这个工厂类生产我们需要的对象。

public class UserMapperTest { @Test public void insertUser() throws IOException { // 读取MyBatis的核心配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 获取SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // sqlSessionFactory SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); // 获取sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); // 获取mapper接口对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 测试功能 int result = mapper.insertUser(); // 提交事务 sqlSession.commit(); if (result > 0){ System.out.println("成功"); }else { System.out.println("失败"); } } }

 

7.优化功能,自动提交事务

在获取sqlSession对象时,使用SqlSession sqlSession = sqlSessionFactory.openSession(true);传入一个Boolean类型的参数,值为true,这样就可以自动提交 public class UserMapperTest { @Test public void insertUser() throws IOException { // 读取MyBatis的核心配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 获取SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // sqlSessionFactory SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); // 获取sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 测试功能 int result = mapper.insertUser(); if (result > 0){ System.out.println("成功"); }else { System.out.println("失败"); } } }

 8.加入log4j日志功能

在pom添加日志依赖 log4j log4j 1.2.17

     2. 加入log4j的配置文件

log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录下

 日志的级别:FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试) 从左到右打印的内容越来越详细

 9.通过junit测试修改和删除功能

 ①在UserMapper接口下面写上修改和删除的方法名

 

②在UserMapper.xml写上对应的sql语句

[1]. mapper接口的全类名和映射文件的命名空间(namespace)保持一致

[2]. mapper接口的方法的方法名和映射文件编写的SQL标签的id属性保持一致

 

③测试功能

测试修改 @Test public void updateUser() throws IOException { // 读取MyBatis的核心配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 创建sqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); // 创建sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); //测试功能 int result = mapper.updateUser(); if (result > 0){ System.out.println("成功"); }else { System.out.println("失败"); } }

        2.测试删除

@Test public void deleteUser() throws IOException { // 读取配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 配置工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); // 创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 执行删除方法 int result = mapper.deleteUser(); if (result > 0){ System.out.println("成功"); }else { System.out.println("失败"); } }

10.测试查询功能

查询一个实体类对象

①在UserMapper.java

public interface UserMapper { // 查询一个实体类对象 User getUserById(); }

②在UserMapper.xml

select * from t_user where id = 43

③测试

@Test public void select() throws IOException { // 读取配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 配置工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); // 创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 执行删除方法 User user = mapper.getUserById(); System.out.println(user); }

        2.查询集合

①在UserMapper.java

public interface UserMapper { // 查询一个实体类对象 List getAllUser(); }

②在UserMapper.xml

select * from t_user

③测试

@Test public void select() throws IOException { // 读取配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 配置工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); // 创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 执行删除方法 List allUser = mapper.getAllUser(); for (User user:allUser) { System.out.println(user); } }

【注意】

①查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系

resultType:自动映射,用于属性名和表中字段名一致的情况resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致情况

②当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3